package composite

// 使用组合(composition), 接口(interface, contract)以及 代理(delegate)三个技术手段
// 正交分解的思想
type Flyable interface {
	fly() error
}

type Tweetable interface {
	tweet() error
}

type EggLayable interface {
	layEgg() error
}

// 鸵鸟
type Ostrich struct {
}

func (o *Ostrich) tweet() error {
	panic("implement me")
}

func (o *Ostrich) layEgg() error {
	panic("implement me")
}

// 麻雀
type Sparrow struct {
}

func (s *Sparrow) fly() error {
	panic("implement me")
}

func (s *Sparrow) layEgg() error {
	panic("implement me")
}

func (s *Sparrow) tweet() error {
	panic("implement me")
}
